-- ******************************************************************
-- CISCO-TPC-MIB.my: Third Party Copy : XCOPY Engine
--
-- August 2004, Rahul Chari, Srini Kode               
--
-- Copyright (c) 2002, 2003 by cisco Systems, Inc.
-- All rights reserved.
-- 
-- ******************************************************************
CISCO-TPC-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY, 
        OBJECT-TYPE,
        Unsigned32,
        Counter32,
        Gauge32                             FROM SNMPv2-SMI
        MODULE-COMPLIANCE, 
        OBJECT-GROUP                        FROM SNMPv2-CONF
        RowStatus, 
        TEXTUAL-CONVENTION                  FROM SNMPv2-TC
        FcNameIdOrZero                      FROM CISCO-ST-TC
        vsanIndex                           FROM CISCO-VSAN-MIB
        ciscoMgmt                           FROM CISCO-SMI
        PhysicalIndex                       FROM ENTITY-MIB;
        
                         
ciscoTpcMIB MODULE-IDENTITY
        LAST-UPDATED        "200501240000Z"
        ORGANIZATION        "Cisco Systems, Inc."
        CONTACT-INFO
                "        Cisco Systems
                         Customer Service 
                         
                Postal: 170 W Tasman Drive
                        San Jose, CA  95134
                        USA
                   Tel: +1 800 553 -NETS
                E-mail: cs-san@cisco.com"
        DESCRIPTION
                "The MIB module for Third Party Copy(TPC):
                 Third Party Copy derives its name from the fact
                 that there are three entities involved in the 
                 process of copying data either for backup operations
                 or restore operations. The three entities:
                 - entity originating the copy commands
                 - data source for the copy
                 - data destination for the copy. 
                 
                 The entity originating the copy commands to perform
                 the data transfer can use the SCSI Extended Copy 
                 (XCOPY).
                 
                 The TPC feature exposes a disk target with
                 Logical Unit Number(LUN) 0 that is capable of 
                 processing the SCSI Extended Copy Command (XCOPY) 
                 to transfer data from a specified source to a 
                 specified destination. On receiving the XCOPY 
                 command, the TPC target performs the actual data 
                 transfer from the data source to the data 
                 destination on behalf of the entity issuing the 
                 XCOPY command.
                 
                 The MIB provides an interface to configure the
                 TPC targets. The user specifies the module and
                 the VSAN on which the TPC feature needs to be 
                 configured. Once the feature has been configured
                 target ports are created on the specified module
                 and VSAN that are XCOPY capable. Any application
                 that can source a XCOPY command can use these 
                 targets to perform data movement.
                 
                 Acronyms
                 The following acronyms are used in this document: 
                 
                 XCOPY: 
                    SCSI Extended Copy Command.
                      
                 TPC:
                    Third Party Copy.
                 
                 LUN:
                    Logical Unit Number. 
                    
                 VSAN: 
                    Virtual Storage Area Network. "
                  
        REVISION       "200501240000Z"
        DESCRIPTION
                "Initial version of this MIB module. "
        ::= { ciscoMgmt 460 }

ciscoTpcNotification       OBJECT IDENTIFIER
                               ::= { ciscoTpcMIB 0 }
ciscoTpcObjects            OBJECT IDENTIFIER 
                               ::= { ciscoTpcMIB 1 }
ciscoTpcMIBConformance     OBJECT IDENTIFIER 
                               ::= { ciscoTpcMIB 2 }

ciscoTpcConfig             OBJECT IDENTIFIER 
                               ::= { ciscoTpcObjects 1 }

-- Textual Conventions

TpcTargetState  ::= TEXTUAL-CONVENTION
        STATUS  current
        DESCRIPTION
                "Represents the state of the TPC target. 
                
                 'active'        - indicates that the TPC target is
                                   ready to process XCOPY requests.
                                   
                 'initializing'  - indicates that the TPC target is
                                   not ready.    
                                   
                 'error'         - indicates that the TPC target was
                                   brought down due to error 
                                   conditions. "
        SYNTAX   INTEGER {
                           active(1),
                           initializing(2),
                           error(3)
                         }
                         
--               
-- Third Party Copy Module Table
--

ctpcModuleTable  OBJECT-TYPE
        SYNTAX     SEQUENCE OF CtpcModuleEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "A table listing the modules on which TPC functionality 
                can be configured by the user. Each such module is
                identified by ctpcModuleId. 
                
                The agent creates an entry in this table on 
                detecting a module that can support TPC 
                functionality. Similarly, it will remove the entry
                when the TPC functionality cannot be supported on
                this module any longer. 
                
                The entry in the ctpcVsanTable can only be created 
                on a module present in this table."
        ::= { ciscoTpcConfig 1 }

ctpcModuleEntry  OBJECT-TYPE
        SYNTAX     CtpcModuleEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "A conceptual row in the ctpcModuleTable. Each row
               represents a TPC capable module."
        INDEX { ctpcModuleId }
        ::= { ctpcModuleTable 1 }

CtpcModuleEntry ::= SEQUENCE {
        ctpcModuleId    PhysicalIndex
}
        
ctpcModuleId OBJECT-TYPE
        SYNTAX     PhysicalIndex
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
               "This object specifies the physical index of the 
                module on which TPC can be configured by the user.
                This is same as the entPhysicalIndex of the module."
        ::= { ctpcModuleEntry 1 }

--               
-- Third Party Copy Vsan Table
--

ctpcVsanTable  OBJECT-TYPE
        SYNTAX     SEQUENCE OF CtpcVsanEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "A table listing all the VSANs for which TPC 
                functionality has been configured by the user. The
                user configures TPC functionality on a per VSAN basis
                by specifying the module, identified by ctpcModuleId,
                on which to configure TPC and the VSAN number.
                
                An entry can be created in this table only if an
                entry exists in ctpcModuleTable for this module.
                If a management application attempts to create
                a row in this table corresponding to a module that 
                does not exist in ctpcModuleTable table then the 
                agent would respond with an error-status set to
                 'inconsistentValue'.
                                 
                Once an entry is created, even if this module no 
                longer exists in the ctpcModuleTable, still 
                this entry is not deleted. The entry can only be 
                deleted by setting ctpcVsanRowStatus to 'delete'."
        ::= { ciscoTpcConfig 2 }

ctpcVsanEntry  OBJECT-TYPE
        SYNTAX     CtpcVsanEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "An entry in the TPC VSAN table for each configured
                VSAN on this module."
        INDEX { ctpcModuleId, vsanIndex }
        ::= { ctpcVsanTable 1 }

CtpcVsanEntry ::= SEQUENCE {
        ctpcVsanRowStatus     RowStatus
}
        
ctpcVsanRowStatus OBJECT-TYPE
        SYNTAX     RowStatus
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
               "This object controls and reflects the status of rows
                in this table.  When the agent successfully creates
                the entry, this object is set to 'active' by the 
                agent.
                
                Deleting an entry from this table, unconfigures the
                TPC functionality on the module specified by the 
                corresponding instance index 'ctpcModuleId' 
                on the VSAN represented by the corresponding 
                instance index 'vsanIndex'
                
                To delete an entry, set this object value to 
                'destroy'."
        ::= { ctpcVsanEntry 1 }


--               
-- Third Party Copy Target Table
--

ctpcTargetTable  OBJECT-TYPE
        SYNTAX     SEQUENCE OF CtpcTargetEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "A list of all the TPC targets that are configured 
                on this module and on this VSAN. There can be more
                than one TPC target in the same VSAN on a module.
                The number of TPC targets is implementation specific.
                Each TPC target has a unique node world-wide-name, 
                identified by ctpcTargetNodeName and a unique port
                world-wide-name, identified by ctpcTargetPortName. 
                Each TPC target exposes a single LUN (LUN 0) that is
                XCOPY capable and is only concerned with moving data
                in its own VSAN.
                
                Once an entry is created in ctpcVsanTable, one or 
                more entries are created in this table by agent.
                Similarly the entries in this table are deleted
                when the entry with the same ctpcModuleId and 
                vsanIndex is deleted from the ctpcVsanTable."
        ::= { ciscoTpcConfig 3 }

ctpcTargetEntry  OBJECT-TYPE
        SYNTAX     CtpcTargetEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "An entry in the TPC target table for each TPC target
                in this VSAN on this module."
        INDEX { ctpcModuleId, vsanIndex, ctpcTargetIndex }
        ::= { ctpcTargetTable 1 }

CtpcTargetEntry ::= SEQUENCE {
        ctpcTargetIndex         Unsigned32,
        ctpcTargetNodeName      FcNameIdOrZero,
        ctpcTargetPortName      FcNameIdOrZero,
        ctpcTargetState         TpcTargetState,
        ctpcTargetNumXcopies     Counter32,
        ctpcTargetMinXcopy      Gauge32,
        ctpcTargetMaxXcopy      Gauge32,
        ctpcTargetAvgKbPerSec   Gauge32
}

ctpcTargetIndex OBJECT-TYPE
        SYNTAX     Unsigned32
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
               "The unique id number associated with the TPC target. 
                This id number is unique within the vsan in which 
                the TPC target is configured."
        ::= { ctpcTargetEntry 1 }

ctpcTargetNodeName OBJECT-TYPE
        SYNTAX     FcNameIdOrZero
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
               "The TPC target's node world-wide-name."
        ::= { ctpcTargetEntry 2 }

ctpcTargetPortName OBJECT-TYPE
        SYNTAX     FcNameIdOrZero
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
               "The TPC target's port world-wide-name."
        ::= { ctpcTargetEntry 3 }

ctpcTargetState OBJECT-TYPE
        SYNTAX     TpcTargetState
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
               "The current state of the TPC target"
        ::= { ctpcTargetEntry 4 }

ctpcTargetNumXcopies OBJECT-TYPE
        SYNTAX     Counter32
        UNITS      "commands"
        MAX-ACCESS read-only
        STATUS     current        
        DESCRIPTION
               "The total number of XCOPY commands processed by the 
                TPC target since the module on which this target has
                been configured has been online"
        ::= { ctpcTargetEntry 5 }

ctpcTargetMinXcopy OBJECT-TYPE
        SYNTAX     Gauge32
        UNITS      "Kilobytes"
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
               "The smallest amount of data in Kilobytes transferred 
                by the TPC target in a single xcopy command since the 
                module on which this target has been configured has
                been online."
        ::= { ctpcTargetEntry 6 }

ctpcTargetMaxXcopy OBJECT-TYPE
        SYNTAX     Gauge32
        UNITS      "Kilobytes"
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
               "The largest amount of data in Kilobytes transferred 
                by the TPC target in a single xcopy command since the 
                module on which this target has been configured has
                been online."
        ::= { ctpcTargetEntry 7 }

ctpcTargetAvgKbPerSec OBJECT-TYPE
        SYNTAX     Gauge32
        UNITS      "Kilobytes/second"
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
               "The average kilobytes per second throughput of the
                TPC target in processing the XCOPY commands."
        ::= { ctpcTargetEntry 8 }

-- Conformance

ctpcMIBCompliances OBJECT IDENTIFIER 
                        ::= { ciscoTpcMIBConformance 1 }
ctpcMIBGroups      OBJECT IDENTIFIER 
                        ::= { ciscoTpcMIBConformance 2 }

ctpcMIBCompliance MODULE-COMPLIANCE
        STATUS   current
        DESCRIPTION
               "The compliance statement for entities which 
                implement the CISCO-TPC-MIB mib."
        MODULE MANDATORY-GROUPS { ctpcVsanTargetGroup }
                                          
        OBJECT  ctpcVsanRowStatus
        SYNTAX     INTEGER {             
                     active(1),
                     createAndGo(4),
                     destroy(6)}
        DESCRIPTION 
                   "Only values 'createAndGo', 'destroy' and 
                   'active' need to be supported."
        
        ::= { ctpcMIBCompliances 1 }       

-- Units of Conformance

ctpcVsanTargetGroup  OBJECT-GROUP
     OBJECTS  { ctpcModuleId,
                ctpcVsanRowStatus,
                ctpcTargetNodeName,
                ctpcTargetPortName,
                ctpcTargetState,
                ctpcTargetNumXcopies,
                ctpcTargetMinXcopy,
                ctpcTargetMaxXcopy,
                ctpcTargetAvgKbPerSec
              }
     STATUS  current
     DESCRIPTION
            "A collection of objects for displaying and
             configuring the TPC target."
        ::= { ctpcMIBGroups 1 }

END